package com.java.second_goods.service;

import com.java.second_goods.entity.Review;
import com.java.second_goods.entity.ReviewImage;

import java.util.List;

/**
 * 评价 服务层
 */
public interface ReviewService {
    /**
     * 查询评价信息
     *
     * @param id 评价ID
     * @return 评价信息
     */
    Review selectReviewById(Integer id);

    /**
     * 根据订单ID查询评价
     *
     * @param bookingId 订单ID
     * @return 评价信息
     */
    Review selectReviewByBookingId(String bookingId);

    /**
     * 查询评价列表
     *
     * @param review 评价信息
     * @return 评价集合
     */
    List<Review> selectReviewList(Review review);

    /**
     * 根据厨师ID查询评价列表
     *
     * @param chefId 厨师ID
     * @return 评价列表
     */
    List<Review> selectReviewsByChefId(Integer chefId);

    /**
     * 根据用户ID查询评价列表
     *
     * @param userId 用户ID
     * @return 评价列表
     */
    List<Review> selectReviewsByUserId(Integer userId);

    /**
     * 新增评价
     *
     * @param review 评价信息
     * @param images 评价图片列表
     * @return 结果
     */
    int insertReview(Review review, List<String> images);

    /**
     * 修改评价
     *
     * @param review 评价信息
     * @param images 评价图片列表
     * @return 结果
     */
    int updateReview(Review review, List<String> images);

    /**
     * 删除评价信息
     *
     * @param id 评价ID
     * @return 结果
     */
    int deleteReviewById(Integer id);

    /**
     * 批量删除评价信息
     *
     * @param ids 需要删除的数据ID
     * @return 结果
     */
    int deleteReviewByIds(Integer[] ids);

    /**
     * 根据评价ID查询图片
     *
     * @param reviewId 评价ID
     * @return 图片列表
     */
    List<ReviewImage> selectImagesByReviewId(Integer reviewId);

    /**
     * 获取厨师评分
     *
     * @param chefId 厨师ID
     * @return 平均评分
     */
    Double getChefAvgRating(Integer chefId);
}